Skip to content
This repository has been archived by the owner on Jul 8, 2021. It is now read-only.

Fixes #14 : list_directory always return empty list #15

Closed
wants to merge 1 commit into from
Closed

Fixes #14 : list_directory always return empty list #15

wants to merge 1 commit into from

Conversation

rvrignaud
Copy link

Any thought ?

@bacongobbler
Copy link
Owner

@rvrignaud what's the justification behind this change? How can I reproduce this issue (private/hosted platform)? Is there documentation on this change in the swift client?

@rvrignaud
Copy link
Author

Hello.
Sorry for the long delay for the response. Don't merge this PR, it seems to introduce a problem with the pull feature.
The root problem is that I currently hit docker-archive/docker-registry#516 and I thought was related to #14.
Do you reproduce the root problem (not being able to reindex search registry db when starting from an empty sqlite db) ?

sathlan added a commit to redhat-cip/docker-registry-driver-swift that referenced this pull request Sep 17, 2014
docker-registry has a local database which can be queried using a simple
REST API.  If you trash this database, it is supposed to be recreated
when you restart docker-registry.  This fix the recreation of the db which
happens thanks to results of the the list_directory function.  Previously
this was empty.

To test the problem and review the solution:

 1. assuming a working swift and docker registry with swift driver installed;
 2. push some images;
 3. stop docker-registry;
 4. check sqlalchemy_index_database in docker registry conf and "rm" the database (by default an sqlite file);
 5. restart docker-registry;

With the old code the database will be empty.  With the new one the db
will be filled with the already pushed images.  The main problem come
from the facts that:

    $ curl -i -X GET -H "X-Auth-Token: AUTH_token" 'http://localhost:8080/v1/AUTH_test/docker?prefix=lvl_1/&delimiter=/&format=json'

    [{"hash": "a83a7dcf68a3dd1d83584abd8e230829", "last_modified": "2014-09-17T15:26:25.585390", "bytes": 29, "name": "lvl_1/file_2", "content_type": "application/octet-stream"}, {"subdir": "lvl_1/lvl_2/"}]

and

    $ curl -i -X GET -H "X-Auth-Token: AUTH_token" 'http://localhost:8080/v1/AUTH_test/docker?path=lvl_1/&format=json'

    [{"hash": "a83a7dcf68a3dd1d83584abd8e230829", "last_modified": "2014-09-17T15:26:25.585390", "bytes": 29, "name": "lvl_1/file_2", "content_type": "application/octet-stream"}]

do not return the same thing.  The main difference being that the
subdirectories are not return when using the "path" syntax.

I tested with swift 1.18 and check that the Pseudo-hierarchical folders
and directories behaviour was the same on swift 2.2.0.

This would close bacongobbler#14 and bacongobbler#15.  The "fill it if not there" mechanism is
described in this issue  docker-archive/docker-registry#516
sathlan added a commit to redhat-cip/docker-registry-driver-swift that referenced this pull request Sep 17, 2014
docker-registry has a local database which can be queried using a simple
REST API.  If you trash this database, it is supposed to be recreated
when you restart docker-registry.  This fix the recreation of the db which
happens thanks to results of the the list_directory function.  Previously
this was empty.

To test the problem and review the solution:

 1. assuming a working swift and docker registry with swift driver installed;
 2. push some images;
 3. stop docker-registry;
 4. check sqlalchemy_index_database in docker registry conf and "rm" the database (by default a sqlite file);
 5. restart docker-registry;

With the old code the database will be empty.  With the new one the db
will be filled with the already pushed images.  The main problem come
from the facts that:

    $ curl -i -X GET -H "X-Auth-Token: AUTH_token" 'http://localhost:8080/v1/AUTH_test/docker?prefix=lvl_1/&delimiter=/&format=json'

    [{"hash": "a83a7dcf68a3dd1d83584abd8e230829", "last_modified": "2014-09-17T15:26:25.585390", "bytes": 29, "name": "lvl_1/file_2", "content_type": "application/octet-stream"}, {"subdir": "lvl_1/lvl_2/"}]

and

    $ curl -i -X GET -H "X-Auth-Token: AUTH_token" 'http://localhost:8080/v1/AUTH_test/docker?path=lvl_1/&format=json'

    [{"hash": "a83a7dcf68a3dd1d83584abd8e230829", "last_modified": "2014-09-17T15:26:25.585390", "bytes": 29, "name": "lvl_1/file_2", "content_type": "application/octet-stream"}]

do not return the same thing.  The main difference being that the
subdirectories are not return when using the "path" syntax.

I tested with swift 1.8.0 and check that the Pseudo-hierarchical folders
and directories behaviour was the same on swift 2.2.0.

This would close bacongobbler#14 and bacongobbler#15.  The "fill it if not there" mechanism is
described in this issue  docker-archive/docker-registry#516
@bacongobbler
Copy link
Owner

closing in favour of #18

# for free to subscribe to this conversation on GitHub. Already have an account? #.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants